Gate CI on durable PM tracker health with pm 2026.8.6 - #29
Conversation
Add a 'Verify pm project integrity and merge safety' step to ci.yml immediately after Install dependencies. It runs ./node_modules/.bin/pm health --strict-exit. This closes a hole in multi-agent branch merging: when two agents edit the same scalar field of one item on two branches, the field-aware merge driver picks a winner and records the loser in a clone-local receipt. The resulting .toon has no conflict markers and already holds the winning value, so the naive resolution idiom (git add the marker-free file, commit) succeeds and the peer edit is gone with no trace in any pushed artifact. pm validate returns ok:true on that corrupted result because the file is valid TOON. Only pm health goes red, via integrity.counts.pending_merge_decisions, naming the affected items in pending_merge_decision_items. --strict-exit is load-bearing because a bare pm health exits 0 even when ok:false. Verified green on this repo and proven to exit 1 on the hazard in a throwaway copy.
|
Warning Review limit reached
Next review available in: 50 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
Summary by CodeRabbit
WalkthroughThe CI workflow runs ChangesCI integrity gate
Estimated code review effort: 2 (Simple) | ~10 minutes Sequence Diagram(s)sequenceDiagram
participant CI
participant npm
participant PMHealth
participant TrackedState
CI->>npm: Install dependencies with npm ci
CI->>PMHealth: Run pm health --strict-exit
PMHealth->>TrackedState: Check tracked PM project health
PMHealth-->>CI: Return success or failure
Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Reviewer's GuideAdds a CI gate that runs File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Greptile SummaryThis PR adds a strict CI health gate for durable, checkout-visible PM tracker failures while explicitly documenting that clone-local merge receipts cannot provide lossless CI attestation.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains; the previously reported fresh-checkout receipt limitation is now explicitly and consistently documented.
|
| Filename | Overview |
|---|---|
| .github/workflows/ci.yml | Adds the strict PM health check and accurately limits its stated guarantees to checkout-visible state. |
| .agents/pm/chores/pm-github-eh1h.toon | Records the CI change, verification, and the distinction between durable health checks and clone-local merge evidence. |
| .agents/pm/history/pm-github-eh1h.jsonl | Preserves the tracker history, reconciliation evidence, and corrections to the original attribution and capability claims. |
| package.json | Updates the PM CLI and changelog development dependencies to 2026.8.6. |
| package-lock.json | Locks the updated PM tooling and its transitive dependencies. |
| .gitattributes | Adds merge handling for PM extension metadata and disables generic merging for other extension content. |
| CHANGELOG.md | Documents the new strict tracked-state health gate without claiming lossless merge detection. |
Reviews (6): Last reviewed commit: "docs(ci): resolve exact-head health-gate..." | Re-trigger Greptile
The step and its tracker item both said this gate blocks a merge that silently discarded a peer agent's edit. Verified today that it does not, and cannot as built: merge-decision receipts live in .agents/pm/runtime/, which pm init gitignores, so they are never pushed. On the same commit, the merge-performing clone reports one receipt and exits 1, while a fresh clone - which is what CI checks out - reports zero and exits 0. The pushed history does not disambiguate it either. Both writes are present in timestamp order and the item matches the latest, so history verification reports ok. Filed upstream as unbraind/pm-cli#922; flagged first by Greptile on every PR in this rollout. The step is kept, because what it does catch is real and CI-observable: conflict markers in item and history files, parse failures, invalid history JSON, hash drift, unknown-author events, stale in-progress work and tracked runtime cache files. Only the overstated claim is removed. A gate whose documentation promises more than it delivers is worse than no gate, because it stops people looking for the hazard it does not cover.
|
Correction pushed — re-review please. @coderabbitai full review Greptile's P1 was correct and is the reason for this push. The gate does not detect a What changed: the overstated claim was removed everywhere it appeared — the step name What is worth checking this round:
GitHub Actions is under a critical outage, so the checks here are absent for external |
Rate Limit Exceeded
|
|
Fresh exact-head review requested for @greptileai |
|
|
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.agents/pm/chores/pm-github-eh1h.toon:
- Around line 21-24: Update the metadata.files list in this chore to include
.github/workflows/ci.yml and CHANGELOG.md alongside the existing paths,
preserving the current path/scope structure so the tracker traces the CI gate
implementation and documentation.
- Line 3: The clone-local merge-receipt references in the chore metadata point
to the wrong upstream issue. Update the description, actual_result,
close_reason, and docs link, including the corresponding entries 16, 32, and 33,
to reference pm-cli#922 for clone-local receipt coverage; reserve pm-cli#921 for
the broader fresh-clone/history-repair signal gap.
In @.agents/pm/history/pm-github-eh1h.jsonl:
- Line 9: Update the merge_reconcile patch in the history event so it also
replaces /metadata/updated_at with the final event timestamp,
2026-08-06T22:22:02.721Z. Keep the existing notes and title mutations unchanged,
ensuring the chore metadata freshness matches the final recorded mutation.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 63d75edc-1d56-4413-90dc-bf647f9cd183
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (6)
.agents/pm/chores/pm-github-eh1h.toon.agents/pm/history/pm-github-eh1h.jsonl.gitattributes.github/workflows/ci.ymlCHANGELOG.mdpackage.json
|
Exact-head disposition for
Every inline bot finding has been reacted to and answered in-thread. CodeRabbit rate-limit messages are recorded as review limitations, not approvals. @greptileai |
Rate Limit Exceeded
|
Outcome
pm health --strict-exitin CI for durable, checkout-visible tracker failures.@unbrained/pm-cli2026.8.6 andpm-changelog2026.8.6.pm merge reconcile, preserves both agents' notes, refreshes the 2026.8.6 merge fence, and regenerates the package-owned changelog.PM evidence
Verification
npm ci --ignore-scriptsnpm run release:checkpm health --strict-exitnpm run changelog:check